home *** CD-ROM | disk | FTP | other *** search
/ Australian Personal Computer 2000 July / CD 3 / redhat-6.2.iso / RedHat / instimage / usr / lib / anaconda / harddrive.py < prev    next >
Encoding:
Python Source  |  2000-05-02  |  1.8 KB  |  85 lines

  1. # Install method for disk image installs (CD & NFS)
  2.  
  3. from comps import ComponentSet, HeaderList
  4. import os
  5. import isys
  6. import rpm
  7. import string
  8.  
  9. import todo
  10.  
  11. FILENAME = 1000000
  12.  
  13. class InstallMethod:
  14.  
  15.     def mountMedia(self):
  16.     if (self.isMounted):
  17.         raise SystemError, "trying to mount already-mounted image!"
  18.     
  19.     f = open("/proc/mounts", "r")
  20.     l = f.readlines()
  21.     f.close()
  22.  
  23.     for line in l:
  24.         s = string.split(line)
  25.         if s[0] == "/tmp/" + self.device:
  26.         self.tree = s[1] + "/"
  27.         return
  28.     
  29.     isys.makeDevInode(self.device, '/tmp/' + self.device)
  30.     isys.mount('/tmp/' + self.device, "/tmp/hdimage", 
  31.            fstype = self.fstype);
  32.     self.tree = "/tmp/hdimage/"
  33.     self.isMounted = 1
  34.  
  35.     def umountMedia(self):
  36.     if self.isMounted:
  37.         isys.umount(self.tree)
  38.         self.tree = None
  39.         self.isMounted = 0
  40.     
  41.     def readComps(self, hdlist):
  42.     self.mountMedia()
  43.     cs = ComponentSet(self.tree + self.path + 
  44.                           '/RedHat/base/comps', hdlist)
  45.     self.umountMedia()
  46.     return cs
  47.  
  48.     def getFilename(self, h):
  49.     return self.tree + self.path + "/RedHat/RPMS/" + self.fnames[h]
  50.  
  51.     def readHeaders(self):
  52.     self.mountMedia()
  53.     hl = []
  54.     path = self.tree + self.path + "/RedHat/RPMS"
  55.     for n in os.listdir(path):
  56.             fd = os.open(path + "/" + n, 0)
  57.             try:
  58.                 (h, isSource) = rpm.headerFromPackage(fd)
  59.         if (h and not isSource):
  60.             self.fnames[h] = n
  61.             hl.append(h)
  62.             except:
  63.         pass
  64.             os.close(fd)
  65.         
  66.     self.umountMedia()
  67.     return HeaderList(hl)
  68.  
  69.     def targetFstab(self, fstab):
  70.     self.mountMedia()
  71.         
  72.     def filesDone(self):
  73.     self.umountMedia()
  74.  
  75.     def unlinkFilename(self, fullName):
  76.     pass
  77.         
  78.     def __init__(self, device, type, path):
  79.     self.device = device
  80.     self.path = path
  81.     self.fstype = type
  82.     self.fnames = {}
  83.         self.isMounted = 0
  84.         
  85.